package com.vegetable.modules.service.finance;

import com.alibaba.fastjson.JSONObject;
import com.vegetable.modules.service.wx.WxCpMessageService;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.bean.article.NewArticle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * 财务分析数据企业微信推送服务
 *
 * @author Qoder
 */
@Service
public class FinancialAnalysisWxPushService {

    @Autowired
    private WxCpMessageService wxCpMessageService;
    
    @Autowired
    private FinancialDataFormatter financialDataFormatter;
    
    @Autowired
    private ChartGenerationService chartGenerationService;

    /**
     * 将财务分析数据推送到企业微信用户（文本形式）
     *
     * @param financialData 财务分析数据
     * @param wxUserId 企业微信用户ID
     * @return 是否推送成功
     */
    public boolean pushFinancialAnalysisToWxUser(JSONObject financialData, String wxUserId) {
        try {
            String content = financialDataFormatter.formatFinancialAnalysisData(financialData);
            return wxCpMessageService.sendTextMessageToUser(wxUserId, content);
        } catch (WxErrorException e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 将财务分析数据推送到企业微信用户（Markdown形式）
     *
     * @param financialData 财务分析数据
     * @param wxUserId 企业微信用户ID
     * @return 是否推送成功
     */
    public boolean pushFinancialAnalysisMarkdownToWxUser(JSONObject financialData, String wxUserId) {
        try {
            String content = financialDataFormatter.formatFinancialAnalysisMarkdown(financialData);
            return wxCpMessageService.sendMarkdownMessageToUser(wxUserId, content);
        } catch (WxErrorException e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 将财务分析数据推送到企业微信用户（图文形式）
     *
     * @param financialData 财务分析数据
     * @param wxUserId 企业微信用户ID
     * @return 是否推送成功
     */
    public boolean pushFinancialAnalysisChartToWxUser(JSONObject financialData, String wxUserId) {
        try {
            List<NewArticle> articles = createFinancialAnalysisArticles(financialData);
            return wxCpMessageService.sendNewsMessageToUser(wxUserId, articles);
        } catch (WxErrorException e) {
            e.printStackTrace();
            return false;
        }
    }

    /**
     * 创建财务分析图文消息
     *
     * @param financialData 财务数据
     * @return 图文消息列表
     */
    private List<NewArticle> createFinancialAnalysisArticles(JSONObject financialData) {
        List<NewArticle> articles = new ArrayList<>();
        
        // 总体财务情况图表
        NewArticle summaryArticle = new NewArticle();
        summaryArticle.setTitle("📊 总体财务分析");
        summaryArticle.setDescription("点击查看总体财务情况图表");
        summaryArticle.setUrl("https://example.com/financial-analysis.html"); // 实际项目中应替换为真实的详情页面URL
        summaryArticle.setPicUrl(chartGenerationService.generateSummaryChartUrl(financialData));
        articles.add(summaryArticle);
        
        // 月度财务数据图表
        NewArticle monthlyArticle = new NewArticle();
        monthlyArticle.setTitle("📈 月度财务趋势");
        monthlyArticle.setDescription("点击查看月度财务数据图表");
        monthlyArticle.setUrl("https://example.com/financial-analysis.html"); // 实际项目中应替换为真实的详情页面URL
        monthlyArticle.setPicUrl(chartGenerationService.generateMonthlyChartUrl(financialData));
        articles.add(monthlyArticle);
        
        // 详细数据链接
        NewArticle detailArticle = new NewArticle();
        detailArticle.setTitle("📄 详细财务报告");
        detailArticle.setDescription(financialDataFormatter.formatFinancialSummary(financialData));
        detailArticle.setUrl("https://example.com/financial-analysis.html"); // 实际项目中应替换为真实的详情页面URL
        detailArticle.setPicUrl("https://example.com/images/financial-report.png"); // 实际项目中应替换为真实的图片URL
        articles.add(detailArticle);
        
        return articles;
    }
}